热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java|学习笔记01概论

目录1.解释型语言和编译型语言编译型语言解释型语言Java是解释型语言or编译型语言?2.Java的发展历史3.Java平台的三大版本JavaSE(Ja

目录

1.解释型语言和编译型语言

编译型语言

解释型语言

Java是解释型语言 or 编译型语言?

2.Java的发展历史

3.Java平台的三大版本

Java SE ( Java Platform Standard Edition)

Java EE ( Java Platform Enterprise Edition )

Java ME ( Java Platform Micro Edition)

4.Java开发环境

JDK(Java Development Kit)

JRE(Java Runtime Environment)

JVM(Java Virtual Machine)

5.Java的版本

6.Java程序的执行过程 




1.解释型语言和编译型语言


编译型语言

程序在执行之前需要一个专门的编译过程,把源代码编译成机器语言,运行时不需要再次翻译,直接使用之前编译的结果就行。代表性的编译型语言有C、C++、Pascal等

特点:程序执行效率高;依赖编译器,因此跨平台性要一差些


解释型语言

源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。代表性的解释型语言有Python、Javascript、Shell等

特点:运行效率一般较低,依赖解释器,跨平台性好


Java是解释型语言 or 编译型语言?

Java究竟是解释型语言还是编译型语言,在程序界依然讨论不休

Java同时具有解释型语言和编译型语言的特点,说Java是编译型语言,主要是因为现在的JVM为了效率,都有一些JIT(Just In-Time Compiler,即时编译器)优化,它又会把热点代码(被多次调用的方法、被多次执行的循环体)的.class的二进制代码编译为本地的机器码直接运行

说Java是编译型语言,是因为Java代码编译后的字节码文件不能直接运行在操作系统上,还需要经过JVM解释为机器码才能在对应操作系统上运行

从Java语言的特点来看,其实它更偏向于解释型语言,比如它的运行效率相比C、C++等语言要低一些、它依赖解释器且跨平台性较好。事实上,随着现代语言的发展,以及即时编译等技术的出现,解释型语言和编译型语言的差距已经逐渐缩小,不必太过纠结于此


2.Java的发展历史

Java的前身:1991年4月,Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统,由James Gosling博士领导的绿色计划(Green Project)开始启动,这个计划的产品就是Java语言的前身:Oak(橡树)

Java的诞生:1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“一次编译,到处运行”的口号

JavaOne大会:1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会

Java的三个版本:1999年6月,发布Java的三个版本:J2SE、J2EE、J2ME

命名的重大更新:2005年6月,Java SE6.0发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

Oracle公司收购Sun:2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有

JDK1.8发布:2014年3月18日,Oracle公司发布Java SE 1.8

Java最新版本:2022年,JDK19发布


3.Java平台的三大版本


Java SE ( Java Platform Standard Edition)

Java平台标准版,以前称为 J2SE。JavaSE主要用于桌面应用开发,同时也是Java的基础


Java EE ( Java Platform Enterprise Edition )

Java平台企业版,以前称为 J2EE。JavaEE主要用于Web项目的开发,包括十三种核心技术:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF


Java ME ( Java Platform Micro Edition)

Java平台微型版,以前称为 J2ME。JavaME主要为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供开发环境


4.Java开发环境


JDK(Java Development Kit)

Java开发工具包,其中包括编译工具(javac)打包工具(jar)等,也包括JRE


JRE(Java Runtime Environment)

Java运行时环境,其中包括JVM和Java核心类库,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可


JVM(Java Virtual Machine)

Java虚拟机,JVM可以把字节码解释成具体平台上的机器指令执行,这是Java能够“一次编译,到处运行”的原因


5.Java的版本

Java的版本有两种描述,一种是这样的,比如Java 8;另一种是这样的JDK1.8,它们是一个意思。通常程序员口中的Java版本,指的其实是Java的JDK版本,我们只需要知道

JDK1.8 == JDK8 == Java 8 

JDK1.9 == JDK9 == Java 9

至于为什么JDK1.9 == JDK9,这其实是一个历史遗留问题,JDK1.9的下一个版本没有命名为JDK2.0,而是命名为了JDK10,对应着Java 10,有兴趣的同学可以参考这篇博客——Java--Java版本和JDK版本_MinggeQingchun的博客-CSDN博客_java最新版本是多少 


目前Java最新版本是JDK19 (JDK19 == Java 19

可以到Oracle的官网查看Java的最新版本:Java Downloads | Oracle 中国



6.Java程序的执行过程 


推荐阅读
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 【Java面试】简单说一下你对序列化和反序列化的理解
    Hi,大家好,我是Mic一个工作4年的粉丝,投了很多简历好不容易接到一个互联网公司的面试邀约。在面试第一轮就被干掉了,原因是对主流互联网技术理解太浅了。其中就有一个这样的问题:“简 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Java面试题系列:将面试题中比较经典和核心的内容写成系列文章持续在公众号更新,可巩固基础知识,可梳理底层原理,欢迎大家持续关注【程序新视界】。本篇为面试题系列第2篇。常见面试问 ... [详细]
author-avatar
手机用户2502929415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有